void setup() {
  Serial.begin(9600);  // 初始化串口，设置波特率为9600
}

void loop() {
  if (Serial.available() > 0) {  // 检查串口是否有数据可读
    String inputText = "";  // 用于存储从串口读取的文本
    while (Serial.available() > 0) {
      inputText += (char)Serial.read();  // 逐个字符读取并拼接成字符串
    }

    unsigned char headOfFrame[5];
    int length = inputText.length();  // 获取读取到的文本长度
    unsigned char ecc = 0;
    int i;

    // 构造帧头及相关设置
    headOfFrame[0] = 0xFD;
    headOfFrame[1] = 0x00;
    headOfFrame[2] = length + 3;
    headOfFrame[3] = 0x01;
    headOfFrame[4] = 0x01;

    // 发送帧头字节并计算异或校验和
    for (i = 0; i < 5; i++) {
      ecc ^= headOfFrame[i];
      Serial.write(headOfFrame[i]);
    }

    // 发送文本数据字节并更新异或校验和
    for (i = 0; i < length; i++) {
      ecc ^= inputText.charAt(i);  // 注意这里获取字符的方式与之前不同
      Serial.write(inputText.charAt(i));
    }

    // 发送校验字节
    Serial.write(ecc);
  }
  delay(100);  // 适当延迟，避免频繁发送，可根据实际情况调整
}